package models

import "encoding/xml"

/*
结构体中的XMLName字段或者类型为xml.Name的字段,会被删除.使用此字段tag上定义的属性进行解析
结构体tag中”-” 在解析过程中会忽略结构体中的这个字段
结构体tag中”name,attr” 使用name作输出为xml属性,对应字段值作为属性值
结构体tag中”,attr” 使用字段名作为xml属性,字段值作为xml属性值
结构体tag中”,chardata” 不作为xml的节点输出,把该字段对应的值作为字符输出
结构体tag中 “,innerxml” 如果结构体改字段是基本类型如:string,int等,和”,chardata”输出无区别,如果是一个结构体,输出值会是一个完整的xml结构
结构体tag中 “,comment” 输出xml中的注释
结构体tag中”omitempty” 该字段是go中的空值:false, 0,空指针,空接口,任何长度为0的切片,数组,字符串和map. 都会被忽略
结构体中不包含tag 会以改字段作为xml属性名称,值作为xml属性值
————————————————
原文链接：https://blog.csdn.net/sun198292/article/details/75213433
*/

//微信公众号响应文本信息
type WxRecvMsgTextResp struct {
	XMLName      xml.Name `xml:"xml"`
	ToUserName   string   `xml:"ToUserName"`
	FromUserName string   `xml:"FromUserName"`
	CreateTime   int64    `xml:"CreateTime"`
	MsgType      string   `xml:"MsgType"`
	Content      string   `xml:"Content"`
	//MsgId 			int64	`xml:"MsgId"`
}

//微信公众号响应图片信息
type WxRecvMsgImageResp struct {
	XMLName      xml.Name `xml:"xml"`
	ToUserName   string   `xml:"ToUserName"`
	FromUserName string   `xml:"FromUserName"`
	CreateTime   int64    `xml:"CreateTime"`
	MsgType      string   `xml:"MsgType"`
	Content      string   `xml:"Content"`
	//MsgId 			int64	`xml:"Image>MsgId"`
}

//图文信息
type ArticlesItem struct {
	XMLName     xml.Name `xml:"item"`
	Title       string   `xml:"Title"`
	Description string   `xml:"Description"`
	PicUrl      string   `xml:"PicUrl"`
	Url         string   `xml:"Url"`
}

//微信公众号响应图文信息
type WxRecvMsgNewsResp struct {
	XMLName      xml.Name `xml:"xml"`
	ToUserName   string   `xml:"ToUserName"`
	FromUserName string   `xml:"FromUserName"`
	CreateTime   int64    `xml:"CreateTime"`
	MsgType      string   `xml:"MsgType"`
	ArticleCount int      `xml:"ArticleCount"`
	//Articles 		string	 `xml:"Articles,attr"`
	ArticlesItems []ArticlesItem `xml:"Articles>item"`
}

//我们定义一个结构体映射响应消息数据包：
type CDATAText struct {
	Text string `xml:",innerxml"`
}
type WxRecvMsgEncryptResponseBody struct {
	XMLName      xml.Name `xml:"xml"`
	Encrypt      CDATAText
	MsgSignature CDATAText
	TimeStamp    string
	Nonce        CDATAText
}

//获取AccessToken响应信息
type WxAccessTokenResponse struct {
	AccessToken string `json:"access_token"`
	ExpiresIn   int    `json:"expires_in"`
}

//获取AccessToken响应信息
type WxUserInfoResponse struct {
	Subscribe     int    `json:"subscribe"`
	OpenId        string `json:"openid"`
	NickName      string `json:"nickname"`
	Sex           int    `json:"sex"`
	Language      string `json:"language"`
	City          string `json:"city"`
	Province      string `json:"province"`
	Country       string `json:"country"`
	HeadImgUrl    string `json:"headimgurl"`
	SubscribeTime int64  `json:"subscribe_time"`
	UnionId       string `json:"unionid"`
	Remark        string `json:"remark"`
}

//远程服务器
type ErrResp struct {
	Err int    `json:"err"`
	Msg string `json:"msg"`
}

type WxCreateParams struct {
	Path   string `json:"path"`
	RoomId string `json:"room_id"`
}

type WxCreateGameRoomResp struct {
	ErrResp
	Params WxCreateParams `json:"params"`
}

type WxJoinParams struct {
	Path string `json:"path"`
}
type WxJoinResp struct {
	ErrResp
	Params WxJoinParams `json:"params"`
}

type WxExitResp struct {
	ErrResp
	Params string `json:"params"`
}
